home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / ant / antenna2 / linphase.bas < prev    next >
BASIC Source File  |  1986-08-12  |  3KB  |  89 lines

  1. 10 CLS
  2. 20 KEY OFF:KEY 10,""
  3. 30 '      MAY 29, 1986
  4. 40    T$="ARRAY FACTOR OF N LINEAR ELEMENTS":LC=1:GOSUB 880
  5. 50 '      AHMAD FAIZAL MOHD ZAIN
  6. 60 '
  7. 70 PRINT: PRINT:PRINT:PRINT
  8. 80 DIM Y(360)
  9. 90 PI=3.141592
  10. 100 DEF FN LOGTEN(X)=LOG(X)/LOG(10)
  11. 110 DEF FN F(PSI)=(SIN(N*PSI/2)/SIN(PSI/2))/N
  12. 120 DEF FN G(PSI)=COS(N*PSI/2)/COS(PSI/2)
  13. 130 INPUT "PHASE SHIFT IN DEGREES";ALP
  14. 140 INPUT "SEPERATION  IN LAMBDA ";D
  15. 150 INPUT "# OF ELEMENTS         ";N
  16. 160 SCREEN 2,0:CLS:KEY OFF
  17. 170 LOCATE 25,1:PRINT"F10=QUIT  <cur up>=increase phase  <cur down>=decrease phase"
  18. 180 '
  19. 190 ALPR=ALP*PI/180
  20. 200 TT=-ALPR/(2*PI*D)
  21. 210 IF TT=1 THEN THE0=0:GOTO 250
  22. 220 IF TT=-1 THEN THE0=180:GOTO 250
  23. 230 THE0=1.570796-ATN(TT/SQR(1-TT*TT))
  24. 240 THE0=THE0*180/PI
  25. 250 VIEW (126,23)-(516,185),,2
  26. 260 PSI0=ALPR+2*PI*D*COS(0)
  27. 270 YMAX=0
  28. 280 LOCATE 1,10:PRINT USING "NUMBER OF ELEMENTS : ###";N;
  29. 290 LOCATE 1,40:PRINT USING "ELEMENTS SPACING : ##.##";D;:PRINT" LAMBDA"
  30. 300 LOCATE 2,5:PRINT USING "PROGRESSIVE PHASE SHIFT : ####.##";ALP;:PRINT" DEG"
  31. 310 LOCATE 2,46:PRINT USING "SCAN ANGLE : ####.##";THE0;:PRINT" DEG"
  32. 320 GOSUB 470
  33. 330 A$=INKEY$:IF LEN(A$)<>2 THEN 330
  34. 340 AN=ASC(MID$(A$,2,1))
  35. 350 IF AN=72 THEN ALP=ALP+10:GOTO 420
  36. 360 IF AN=80 THEN ALP=ALP-10:GOTO 420
  37. 370 IF AN=77 THEN ALP=ALP+5:GOTO 420
  38. 380 IF AN=75 THEN ALP=ALP-5:GOTO 420
  39. 390 IF AN=68 THEN GOSUB 820
  40. 400 GOTO 330
  41. 410 '
  42. 420 LOCATE 1,10:PRINT USING "NUMBER OF ELEMENTS : ###";N;
  43. 430 LOCATE 1,40:PRINT USING "ELEMENTS SPACING : ##.##";D;:PRINT" LAMBDA"
  44. 440 LOCATE 2,5:PRINT USING "PROGRESSIVE PHASE SHIFT : ####.##";ALP;:PRINT" DEG"
  45. 450 LOCATE 2,46:PRINT USING "SCAN ANGLE : ####.##";THE0;:PRINT" DEG"
  46. 460 GOTO 190
  47. 470 '
  48. 480 LOCATE 13,36:PRINT"PLEASE WAIT"
  49. 490 FOR TH=0 TO 180
  50. 500   X=TH*PI/180
  51. 510   PSI=ALPR+2*PI*D*COS(X)
  52. 520   IF SIN(PSI/2)=0 THEN Y(TH)=1:GOTO 550
  53. 530   Y(TH)=ABS(FN F(PSI))
  54. 540   Y(360-TH)=Y(TH)
  55. 550   IF Y(TH)>YMAX THEN YMAX=Y(TH)
  56. 560 NEXT TH
  57. 570 '
  58. 580 WINDOW (-YMAX,-YMAX)-(YMAX,YMAX)
  59. 590 '
  60. 600 CLS
  61. 610 LOCATE 13,12:PRINT"180"
  62. 620 LOCATE 13,67:PRINT"0"
  63. 630 CIRCLE (0,0),YMAX,1
  64. 640 CIRCLE (0,0),.75*YMAX,1
  65. 650 CIRCLE (0,0),.5*YMAX,1
  66. 660 CIRCLE (0,0),.25*YMAX,1
  67. 670 LINE (-YMAX,0)-(YMAX,0),1
  68. 680 LINE (0,YMAX)-(0,-YMAX),1
  69. 690 LINE (-.707*YMAX,.707*YMAX)-(.707*YMAX,-.707*YMAX),1
  70. 700 LINE (-.707*YMAX,-.707*YMAX)-(.707*YMAX,.707*YMAX),1
  71. 710 '
  72. 720 IF PSI0=0 THEN PSET (YMAX,0) ELSE PSET (FN F(PSI0),0)
  73. 730 FOR TH=0 TO 360
  74. 740   XX=TH*PI/180
  75. 750   X=Y(TH)*COS(XX)
  76. 760   Y=Y(TH)*SIN(XX)
  77. 770   LINE -(X,Y),2
  78. 780 NEXT TH
  79. 790 RETURN
  80. 800 LOCATE 1,1
  81. 810 '
  82. 820 T$="DO YOU WANT TO RUN AGAIN (Y/N)?                               ":LC=25:GOSUB 880
  83. 830 AN$=INKEY$
  84. 840 IF AN$="Y" OR AN$="y" THEN RUN
  85. 850 IF AN$="N" OR AN$="n" THEN END
  86. 860 GOTO 820
  87. 870 :
  88. 880 LOCATE LC,(80-LEN(T$))/2+1:PRINT T$;:RETURN    'SUBROUTINE TO CENTRE TEXT
  89.